package xymt.novaway.system.domain.bo;

import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import xymt.novaway.common.mybatis.core.domain.BaseEntity;
import xymt.novaway.system.domain.SysRoleDataScopeConfig;

/**
 * 角色数据权限配置业务对象 sys_role_data_scope_config
 *
 * @author NovaWay
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SysRoleDataScopeConfig.class, reverseConvertGenerate = false)
public class SysRoleDataScopeConfigBo extends BaseEntity {

    /**
     * 主键ID
     */
    private Long id;

    /**
     * 角色ID
     */
    @NotNull(message = "角色ID不能为空")
    private Long roleId;

    /**
     * 菜单ID（绑定具体界面）
     */
    @NotNull(message = "菜单ID不能为空")
    private Long menuId;

    /**
     * 接口权限标识（如system:order:list）
     */
    @NotBlank(message = "接口权限标识不能为空")
    @Size(max = 200, message = "接口权限标识长度不能超过{max}个字符")
    private String permission;

    /**
     * 数据表名
     */
    @Size(max = 100, message = "数据表名长度不能超过{max}个字符")
    private String tableName;

    /**
     * 过滤字段名（如status、type、user_id等）
     */
    @NotBlank(message = "过滤字段名不能为空")
    @Size(max = 100, message = "过滤字段名长度不能超过{max}个字符")
    private String filterField;

    /**
     * 允许的字段值（JSON格式存储）
     */
    private String filterValues;

    /**
     * 过滤类型（IN、EQ、LIKE、BETWEEN等）
     */
    @Size(max = 20, message = "过滤类型长度不能超过{max}个字符")
    private String filterType;

    /**
     * 启用状态（0启用 1禁用）
     */
    private String enableStatus;

    /**
     * 备注说明
     */
    @Size(max = 500, message = "备注说明长度不能超过{max}个字符")
    private String remark;

}